package com.gagakuai.bpm.dao.mapper.camunda;


import com.gagakuai.bpm.domian.entity.camuda.ActRuTask;
import org.apache.ibatis.annotations.Param;
import org.camunda.bpm.engine.task.Task;

import java.util.Date;
import java.util.List;

public interface ActRuTaskMapper {
    int deleteByPrimaryKey(String id);

    int insert(ActRuTask record);

    int insertOrUpdate(ActRuTask record);

    int insertOrUpdateSelective(ActRuTask record);

    int insertSelective(ActRuTask record);

    ActRuTask selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(ActRuTask record);

    int updateByPrimaryKey(ActRuTask record);

    int updateBatch(List<ActRuTask> list);

    int batchInsert(@Param("list") List<ActRuTask> list);


    /*
     * 根据工作流实列获取正在运行的任务
     */
    List<ActRuTask> selectByPocInsId(@Param("workFlowMNo") String workFlowMNo, @Param("taskDefKey") String taskDefKey);

    /*
     * 根据工作流实列获取正在运行的最新活跃任务
     */
    List<ActRuTask> selectLastByInsd(@Param("workFlowMNo") String workFlowMNo, @Param("orignTaskCreateTime")Date createTime,
                                     @Param("addTaskIdList") List<String> addTaskId);


    /*
     * 根据流程实列获取当前正在运行的任务数目
     */
    Integer selecRunNumByIns(@Param("workFlowMNo") String workFlowMNo);


    /*
     * 根据流程实列删除当前正在运行的任务数目
     */
    Integer deleteByProsIns(@Param("workFlowMNo") String processId);


    /*
     * 根据taskId删除当前正在运行的任务
     */
    Integer deleteByProsInsList(@Param("taskIdList") List<String> processIdList);


    /*
     * 根据taskId获取
     */
    String selectTaskDefKeyBytaskId(String taskId);


    /*
     * 获取去当前任务有哪些人使用中-owner
     */
    List<String> selectCurTaskOwnerList(@Param("processId") String processId);

    /*
     * 获取去当前任务的Assigne
     */
    List<String> selectCurTaskOwnerListForDelagate(@Param("processId") String processId);

    /*
     * 获取去当前任务的Assinge
     */
    List<String> selectCurTaskAssigneList(@Param("processId") String processId);




    /*
     *
     * 在回退上一步的时候，查询上一步的任务拥有者不算上加签
     *
     */
    List<ActRuTask> selectActHiIdentitylinksByCurTask(@Param("projectId") String projectId, @Param("actRuTaskList") List<Task> actRuTaskList);

    int deleteRuTaaskExclued(@Param("taskId") String taskId,@Param("instanceId")String processId);

    List<ActRuTask> selectNotExsitByPrimaryKeyBatch(@Param("ruTaskIdList") List<String> c);
}